<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class cliente_x_reservaM extends CI_Model {

    public function __construct() {
        $this->load->database();
    }

    public function cargarHuespedes($idReserva) {
        $query = "SELECT c.* from cliente c, cliente_x_reserva cr
            where c.id_cliente=cr.id_cliente AND cr.id_reserva='$idReserva' AND 
            cr.id_establecimiento='" . $_SESSION["establecimiento"]["id_establecimiento"] . "' ORDER BY c.primer_apellido,c.segundo_apellido";
        //  echo $query;
        return $this->db->query($query)->result();
    }

    public function cargarHuespedesSinTitular($idReserva) {
        $query = "SELECT c.* from cliente c, cliente_x_reserva cr
            where c.id_cliente=cr.id_cliente AND cr.id_reserva='$idReserva' AND c.id_cliente not in (select id_cliente from reserva where id_reserva='$idReserva') AND
            cr.id_establecimiento='" . $_SESSION["establecimiento"]["id_establecimiento"] . "' ORDER BY c.primer_apellido,c.segundo_apellido";
        //  echo $query;
        return $this->db->query($query)->result();
    }

    public function registrarClinteEnReserva($idReserva, $idCliente) {
        $query = "INSERT INTO cliente_x_reserva VALUES('$idReserva','$idCliente','{$_SESSION["establecimiento"]["id_establecimiento"]}')";
        //  echo $query;
        return $this->db->query($query);
    }

    public function existeClienteEnReserva($idReserva, $idCliente) {
        $query = "SELECT count(*) cantidad FROM cliente_x_reserva where id_reserva='$idReserva' AND id_cliente='$idCliente'";
        return $this->db->query($query)->result();
    }

    public function eliminarClienteDeReserva($idReserva, $idCliente) {
        $query = "DELETE FROM cliente_x_reserva where id_reserva='$idReserva' AND id_cliente='$idCliente' AND id_establecimiento='{$_SESSION["establecimiento"]["id_establecimiento"]}'";
        //  echo $query;
        return $this->db->query($query);
    }

    public function contarHuespedes($idReserva) {
        $query = "SELECT COUNT(*) cantidad FROM cliente_x_reserva where id_reserva='$idReserva'";
        return $this->db->query($query)->result();
    }

    public function actualizarClinteEnReserva($idReserva, $idCliente, $idAntiguoTitular) {
        $query = "UPDATE cliente_x_reserva set id_cliente='$idCliente' where id_cliente='$idAntiguoTitular' AND id_reserva='$idReserva'";
        return $this->db->query($query);
    }

    public function huespedesTotales($idEstablecimiento, $criterios) {
        $aux = "cr.id_cliente";
        if (isset($criterios["check"])) {
            $aux = "distinct(cr.id_cliente)";
        }
        $query = "Select $aux from cliente_x_reserva cr, reserva r, reserva_x_cuarto rc  where r.checkin_realizado=1 and r.id_reserva=cr.id_reserva and rc.id_reserva=r.id_reserva and cr.id_establecimiento='$idEstablecimiento' ";
        $query.=(!empty($criterios['desde'])) ? " AND r.fecha_ingreso >= '{$criterios['desde']} 00:00:00'" : " ";
        $query.=(!empty($criterios['hasta'])) ? " AND r.fecha_ingreso <= '{$criterios['hasta']} 23:59:59'" : " ";
        $query.=(!empty($criterios['habitacion'])) ? " AND rc.id_cuarto='{$criterios['habitacion']}'" : " ";
        return $this->db->query($query)->result();
    }

    public function huespedesNacionales($idEstablecimiento, $criterios) {
        $aux = "count(c.id_cliente)";
        if (isset($criterios["check"])) {
            $aux = "count(distinct(c.id_cliente))";
        }
        $query = "Select $aux cantidadHuesNac from cliente_x_reserva cr, cliente c,reserva r,reserva_x_cuarto rc  where r.checkin_realizado=1 and rc.id_reserva=r.id_reserva and r.id_reserva=cr.id_reserva and  cr.id_cliente=c.id_cliente and c.id_pais='169' and cr.id_establecimiento='$idEstablecimiento'";
        $query.=(!empty($criterios['desde'])) ? " AND r.fecha_ingreso  >= '{$criterios['desde']} 00:00:00'" : " ";
        $query.=(!empty($criterios['hasta'])) ? " AND r.fecha_ingreso  <= '{$criterios['hasta']} 23:59:59'" : " ";
        $query.=(!empty($criterios['habitacion'])) ? " AND rc.id_cuarto='{$criterios['habitacion']}'" : " ";
        return $this->db->query($query)->result();
    }

    public function huespedesExtranjeros($idEstablecimiento, $criterios) {
        $aux = "count(c.id_cliente)";
        if (isset($criterios["check"])) {
            $aux = "count(distinct(c.id_cliente))";
        }
        $query = "Select $aux cantidadHuesExt from cliente_x_reserva cr, cliente c,reserva r,reserva_x_cuarto rc  where r.checkin_realizado=1 and rc.id_reserva=r.id_reserva and r.id_reserva=cr.id_reserva and  cr.id_cliente=c.id_cliente and c.id_pais<>'169' and cr.id_establecimiento='$idEstablecimiento'";
        $query.=(!empty($criterios['desde'])) ? " AND r.fecha_ingreso   >= '{$criterios['desde']} 00:00:00'" : " ";
        $query.=(!empty($criterios['hasta'])) ? " AND r.fecha_ingreso   <= '{$criterios['hasta']} 23:59:59'" : " ";
        $query.=(!empty($criterios['habitacion'])) ? " AND rc.id_cuarto='{$criterios['habitacion']}'" : " ";
        return $this->db->query($query)->result();
    }

    public function cantidadHuesNacDes($idEstablecimiento, $criterios) {
        $aux = "count(c.id_cliente)";
        if (isset($criterios["check"])) {
            $aux = "count(distinct(c.id_cliente))";
        }
        $query = "Select $aux cantidadHuesNacDes from cliente_x_reserva cr, cliente c,reserva r,reserva_x_cuarto rc  where r.checkin_realizado=1 and rc.id_reserva=r.id_reserva and r.id_reserva=cr.id_reserva and  cr.id_cliente=c.id_cliente and c.id_pais is null and cr.id_establecimiento='$idEstablecimiento'";
        $query.=(!empty($criterios['desde'])) ? " AND r.fecha_ingreso   >= '{$criterios['desde']} 00:00:00'" : " ";
        $query.=(!empty($criterios['hasta'])) ? " AND r.fecha_ingreso   <= '{$criterios['hasta']} 23:59:59'" : " ";
        $query.=(!empty($criterios['habitacion'])) ? " AND rc.id_cuarto='{$criterios['habitacion']}'" : " ";
        return $this->db->query($query)->result();
    }

}